--- /dev/null
+#target photoshop\r#include image_actions.jsxinc\r\rapp.bringToFront();\r$.localize = true;\r\rvar messages = {\r "wizardTitle" : localize("$$$/JavaScripts/PlinnImageWizard/Title"),\r "srcPanelLabel" : localize("$$$/JavaScripts/PlinnImageWizard/SrcPanelLabel"),\r \r "helpPropsFile" : localize("$$$/JavaScripts/PlinnImageWizard/HelpPropsFile"),\r "buttonSelectPropsFile" : localize("$$$/JavaScripts/PlinnImageWizard/ButtonSelectPropsFile"),\r "noFileSelected" : localize("$$$/JavaScripts/PlinnImageWizard/NoFileSelected"),\r "promptSelectSrcPropsFile" : localize("$$$/JavaScripts/PlinnImageWizard/PromptSelectSrcPropsFile"),\r \r "helpSrcFolder" : localize("$$$/JavaScripts/PlinnImageWizard/HelpSrcFolder"),\r "selectSrcFolder" : localize("$$$/JavaScripts/PlinnImageWizard/ButtonSelectSrcFolder"),\r "promptSelectSrcFolder" : localize("$$$/JavaScripts/PlinnImageWizard/PromptSelectSrcFolder"),\r\r "destPanelLabel" : localize("$$$/JavaScripts/PlinnImageWizard/DestPanelLabel"),\r "helpDestFolder" : localize("$$$/JavaScripts/PlinnImageWizard/HelpDestFolder"),\r "selectDestFolder" : localize("$$$/JavaScripts/PlinnImageWizard/ButtonSelectDestFolder"),\r "promptSelectDestFolder" : localize("$$$/JavaScripts/PlinnImageWizard/PromptSelectDestFolder"),\r\r "noFolderSelected" : localize("$$$/JavaScripts/PlinnImageWizard/NoFolderSelected"),\r "okBtnLabel" : localize("$$$/JavaScripts/PlinnImageWizard/OkBtnLabel"),\r "cancelBtnLabel" : localize("$$$/JavaScripts/PlinnImageWizard/CancelBtnLabel")\r}\r\rfunction init() {\r dlg = null;\r propsFile = null;\r selectedPropsFile = null;\r srcFolder = null;\r selectedFolderPath = null;\r destFolder = null\r selectedDestFolderPath = null;\r gShortFileNameLength = 22;\r plinnFileProcess = {'loading_progress.psd':true,\r 'plinn.psd':true};\r plinnFiles = null;\r colorRegistry = new Array();\r}\r\r\rvar colorRegistry = new Array();\rcolorRegistry['menuBAr']\r\rvar PlinnProcess = new Array();\r\rPlinnProcess['loading_progress.psd'] = function(file) {\r var doc = app.open(file)\r app.activeDocument = doc;\r var fsPath = destFolder.fsName + '/loading_progress.gif';\r _loadingProgress(fsPath, colorRegistry['memberActionsBoxBackground'], colorRegistry['bulletColor'])\r doc.close(SaveOptions.DONOTSAVECHANGES);\r};\r\rPlinnProcess['plinn.psd'] = function(file) {\r var doc = app.open(file)\r app.activeDocument = doc;\r var fsPath = destFolder.fsName + '/logo.gif';\r _plinnLogo(fsPath, colorRegistry['topbarBackgroundColor'], colorRegistry['bulletColor'])\r doc.close(SaveOptions.DONOTSAVECHANGES);\r};\r\rfunction inputFileFilter(ob) {\r return (plinnFileProcess[ob.name]) ? true : false;\r}\r\rfunction setPropsFile() {\r propsFile = File.openDialog(messages['promptSelectSrcPropsFile']);\r if (!propsFile)\r return;\r selectedPropsFile.text = shortFileName(propsFile.fsName);\r parsePropsFile();\r checkVarsInitialization();\r}\r\rfunction setSrcFolder() {\r srcFolder = Folder.selectDialog(messages['promptSelectSrcFolder']);\r if (!srcFolder)\r return;\r selectedSrcFolderPath.text = shortFileName(srcFolder.fsName);\r plinnFiles = srcFolder.getFiles(inputFileFilter);\r checkVarsInitialization();\r}\r\rfunction setDestFolder() {\r destFolder = Folder.selectDialog(messages['promptSelectDestFolder']);\r if (!destFolder)\r return;\r selectedDestFolderPath.text = shortFileName(destFolder.fsName);\r checkVarsInitialization();\r}\r\rfunction checkVarsInitialization() {\r if (propsFile && srcFolder && destFolder)\r dlg.defaultElement.enabled = true;\r}\r\rfunction parsePropsFile() {\r propsFile.open('r');\r var line, nameTypeValue, name, typeValue, type, value;\r while (!propsFile.eof) {\r line = propsFile.readln();\r line = line.replace(/^\s*(.*?)\s*$/, "$1");\r if (!line || line[0] == '#') continue;\r \r /* découpage */\r nameTypeValue = line.split(':',2)\r name = nameTypeValue[0];\r typeValue = nameTypeValue[1].split('=', 2);\r type = typeValue[0];\r value = typeValue[1];\r /* strip */\r name = name.replace(/^\s*(.*?)\s*$/, "$1");\r type = type.replace(/^\s*(.*?)\s*$/, "$1");\r value = value.replace(/^\s*(.*?)\s*$/, "$1");\r if (type != 'string' || value[0] != '#')\r continue;\r \r colorRegistry[name] = splitRGB(value);\r }\r}\r\rvar hexToDec = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7,\r '8':8, '9':9, 'a':10, 'b':11, 'c':12, 'd':13, 'e':14, 'f':15};\rfunction splitRGB(value) {\r value = value.slice(1)\r value = value.toLowerCase();\r if (value.length == 3)\r value = value[0] + value[0] + value[1] + value[1] + value[2] + value[2]\r var r = value.slice(0,2);\r var g = value.slice(2, 4);\r var b = value.slice(4, 6);\r \r r = 16 * hexToDec[r[0]] + hexToDec[r[1]];\r g = 16 * hexToDec[g[0]] + hexToDec[g[1]];\r b = 16 * hexToDec[b[0]] + hexToDec[b[1]];\r return [r, g, b];\r}\r\rfunction processImages() {\r for (var i = 0 ; i < plinnFiles.length ; i++)\r PlinnProcess[plinnFiles[i].name](plinnFiles[i]);\r dlg.close();\r}\r\rfunction drawDialog() {\r dlg = new Window('dialog', messages['wizardTitle']);\r \r /* Panneau de sélection des données source */\r var panelSrc = dlg.add('panel', undefined, messages['srcPanelLabel']);\r \r /* Fichier de propriétés */\r panelSrc.add('statictext', undefined, messages['helpPropsFile']);\r var propsFileGrp = panelSrc.add('group');\r var btnChoosePropsFile = propsFileGrp.add('button', undefined, messages['buttonSelectPropsFile']);\r btnChoosePropsFile.onClick = setPropsFile;\r selectedPropsFile = propsFileGrp.add('statictext');\r selectedPropsFile.text = messages['noFileSelected'];\r \r /* Sélection du dossier source */\r panelSrc.add('statictext', undefined, messages['helpSrcFolder']);\r panelSrc.alignChildren = "left";\r var folderSrcGroup = panelSrc.add('group');\r var btnChooseSrcFolder = folderSrcGroup.add('button', undefined, messages['selectSrcFolder']);\r btnChooseSrcFolder.onClick = setSrcFolder;\r \r selectedSrcFolderPath = folderSrcGroup.add('statictext');\r selectedSrcFolderPath.text = messages['noFolderSelected'];\r \r /* Panneau de sélection du dossier de destination */\r var panelDest = dlg.add('panel', undefined, messages['destPanelLabel']);\r panelDest.add('statictext', undefined, messages['helpDestFolder']);\r panelDest.alignChildren = "left";\r var folderDestGroup = panelDest.add('group');\r var btnChooseDestFolder = folderDestGroup.add('button', undefined, messages['selectDestFolder']);\r btnChooseDestFolder.onClick = setDestFolder;\r \r selectedDestFolderPath = folderDestGroup.add('statictext');\r selectedDestFolderPath.text = messages['noFolderSelected'];\r\r \r \r /* Boutons de contrôle */\r var ctrlGrp = dlg.add('group');\r ctrlGrp.alignement= 'right';\r ctrlGrp.alignChildren = "right";\r var okBtn = ctrlGrp.add('button', undefined, messages["okBtnLabel"]);\r okBtn.enabled = false;\r okBtn.onClick = processImages;\r dlg.defaultElement = okBtn;\r var cancelBtn = ctrlGrp.add('button', undefined, messages["cancelBtnLabel"]);\r dlg.cancelElement = cancelBtn;\r \r \r dlg.center();\r dlg.show();\r}\r\r\rfunction shortFileName( inFileName ) {\r if ( inFileName.length > gShortFileNameLength ) {\r return "..." + inFileName.substr( inFileName.length - gShortFileNameLength + 3, gShortFileNameLength - 3 );\r }\r return inFileName;\r}\r\rfunction setSolidFillColor(color) {\r var r = color[0];\r var g = color[1];\r var b = color[2];\r var id9 = charIDToTypeID( "setd" );\r var desc4 = new ActionDescriptor();\r var id10 = charIDToTypeID( "null" );\r var ref1 = new ActionReference();\r var id11 = stringIDToTypeID( "contentLayer" );\r var id12 = charIDToTypeID( "Ordn" );\r var id13 = charIDToTypeID( "Trgt" );\r ref1.putEnumerated( id11, id12, id13 );\r desc4.putReference( id10, ref1 );\r var id14 = charIDToTypeID( "T " );\r var desc5 = new ActionDescriptor();\r var id15 = charIDToTypeID( "Clr " );\r var desc6 = new ActionDescriptor();\r var id16 = charIDToTypeID( "Rd " );\r desc6.putDouble( id16, r );\r var id17 = charIDToTypeID( "Grn " );\r desc6.putDouble( id17, g );\r var id18 = charIDToTypeID( "Bl " );\r desc6.putDouble( id18, b );\r var id19 = charIDToTypeID( "RGBC" );\r desc5.putObject( id15, id19, desc6 );\r var id20 = stringIDToTypeID( "solidColorLayer" );\r desc4.putObject( id14, id20, desc5 );\r executeAction( id9, desc4, DialogModes.NO ); \r}\r\rfunction main() {\r init();\r drawDialog();\r}\r\rtry {\r main();\r}\rcatch(e) {\r alert(e);\r}
\ No newline at end of file